package com.atguigu.netty.buf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;

/**
 * Unpooled应用实例
 * 演示writerIndex和ReaderIndex
 * 用Unpooled.buffer(int initialCapacity)指定容量大小来创建ByteBuf
 * @author: 叶子
 * @date: 2022/02/17 19:23
 **/
public class NettyByteBuf01 {
    public static void main(String[] args) {
    //创建一个ByteBuf
//        1.创建一个对象，该对象包含一个数组arr，byte[10]
//        2.在netty的buf中，不需要使用flip进行反转，NIO读写转换需要反转
//        3.通过readerIndex、writerIndex和capacity将buffer划分为三个区域
//        0--readerIndex 已经读取的区域
//        readerIndex--writerIndex 可读的区域
//        writerIndex-- capacity 可写的区域
        ByteBuf buffer = Unpooled.buffer(10);
        for (int i = 0; i < 10; i++) {
            buffer.writeByte(i);//每次写入都会使writerIndex发生变化，
            // writerIndex表示下一个将要写索引，所以执行完毕writerIndex值为10
        }
        System.out.println("capacity="+buffer.capacity());//10
//        输出
        for (int i = 0; i <buffer.capacity() ; i++) {
//            System.out.println(buffer.getByte(i));//根据索引获取不会造成readerIndex发生变化
            System.out.println(buffer.readByte());
        }
    }
}